net:snmp: Introduce generic interfaces for snmp_get_cpu_field{, 64}
This is to introduce the generic interfaces for snmp_get_cpu_field{,64}. It exchanges the two for-loops for collecting the percpu statistics data. This can aggregate the data by going through all the items of each cpu sequentially. Signed-off-by: Jia He <hejianet@gmail.com> Suggested-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
fa1403548d
commit
6348ef2dbb
|
@ -219,6 +219,29 @@ static inline u64 snmp_fold_field64(void __percpu *mib, int offt, size_t syncp_o
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define snmp_get_cpu_field64_batch(buff64, stats_list, mib_statistic, offset) \
|
||||||
|
{ \
|
||||||
|
int i, c; \
|
||||||
|
for_each_possible_cpu(c) { \
|
||||||
|
for (i = 0; stats_list[i].name; i++) \
|
||||||
|
buff64[i] += snmp_get_cpu_field64( \
|
||||||
|
mib_statistic, \
|
||||||
|
c, stats_list[i].entry, \
|
||||||
|
offset); \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define snmp_get_cpu_field_batch(buff, stats_list, mib_statistic) \
|
||||||
|
{ \
|
||||||
|
int i, c; \
|
||||||
|
for_each_possible_cpu(c) { \
|
||||||
|
for (i = 0; stats_list[i].name; i++) \
|
||||||
|
buff[i] += snmp_get_cpu_field( \
|
||||||
|
mib_statistic, \
|
||||||
|
c, stats_list[i].entry); \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
void inet_get_local_port_range(struct net *net, int *low, int *high);
|
void inet_get_local_port_range(struct net *net, int *low, int *high);
|
||||||
|
|
||||||
#ifdef CONFIG_SYSCTL
|
#ifdef CONFIG_SYSCTL
|
||||||
|
|
Loading…
Reference in New Issue