Commit 6348ef2d authored by Jia He's avatar Jia He Committed by David S. Miller

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: default avatarJia He <hejianet@gmail.com>
Suggested-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent fa140354
...@@ -219,6 +219,29 @@ static inline u64 snmp_fold_field64(void __percpu *mib, int offt, size_t syncp_o ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment