x86: fix nmi_watchdog=2 on Pentium-D CPUs
[sfrench/cifs-2.6.git] / net / sctp / proc.c
index 330362e4ea0d38fd3a7cdd5ce6f0672d96f622ee..973f1dbc2ec3a8555542601cf900abb4b22d022a 100644 (file)
@@ -38,6 +38,7 @@
 #include <linux/seq_file.h>
 #include <linux/init.h>
 #include <net/sctp/sctp.h>
+#include <net/ip.h> /* for snmp_fold_field */
 
 static struct snmp_mib sctp_snmp_list[] = {
        SNMP_MIB_ITEM("SctpCurrEstab", SCTP_MIB_CURRESTAB),
@@ -75,26 +76,6 @@ static struct snmp_mib sctp_snmp_list[] = {
        SNMP_MIB_SENTINEL
 };
 
-/* Return the current value of a particular entry in the mib by adding its
- * per cpu counters.
- */
-static unsigned long
-fold_field(void *mib[], int nr)
-{
-       unsigned long res = 0;
-       int i;
-
-       for_each_possible_cpu(i) {
-               res +=
-                   *((unsigned long *) (((void *) per_cpu_ptr(mib[0], i)) +
-                                        sizeof (unsigned long) * nr));
-               res +=
-                   *((unsigned long *) (((void *) per_cpu_ptr(mib[1], i)) +
-                                        sizeof (unsigned long) * nr));
-       }
-       return res;
-}
-
 /* Display sctp snmp mib statistics(/proc/net/sctp/snmp). */
 static int sctp_snmp_seq_show(struct seq_file *seq, void *v)
 {
@@ -102,7 +83,7 @@ static int sctp_snmp_seq_show(struct seq_file *seq, void *v)
 
        for (i = 0; sctp_snmp_list[i].name != NULL; i++)
                seq_printf(seq, "%-32s\t%ld\n", sctp_snmp_list[i].name,
-                          fold_field((void **)sctp_statistics,
+                          snmp_fold_field((void **)sctp_statistics,
                                      sctp_snmp_list[i].entry));
 
        return 0;
@@ -127,12 +108,10 @@ int __init sctp_snmp_proc_init(void)
 {
        struct proc_dir_entry *p;
 
-       p = create_proc_entry("snmp", S_IRUGO, proc_net_sctp);
+       p = proc_create("snmp", S_IRUGO, proc_net_sctp, &sctp_snmp_seq_fops);
        if (!p)
                return -ENOMEM;
 
-       p->proc_fops = &sctp_snmp_seq_fops;
-
        return 0;
 }
 
@@ -277,12 +256,10 @@ int __init sctp_eps_proc_init(void)
 {
        struct proc_dir_entry *p;
 
-       p = create_proc_entry("eps", S_IRUGO, proc_net_sctp);
+       p = proc_create("eps", S_IRUGO, proc_net_sctp, &sctp_eps_seq_fops);
        if (!p)
                return -ENOMEM;
 
-       p->proc_fops = &sctp_eps_seq_fops;
-
        return 0;
 }
 
@@ -388,12 +365,11 @@ int __init sctp_assocs_proc_init(void)
 {
        struct proc_dir_entry *p;
 
-       p = create_proc_entry("assocs", S_IRUGO, proc_net_sctp);
+       p = proc_create("assocs", S_IRUGO, proc_net_sctp,
+                       &sctp_assocs_seq_fops);
        if (!p)
                return -ENOMEM;
 
-       p->proc_fops = &sctp_assocs_seq_fops;
-
        return 0;
 }