mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 19:29:37 +00:00
![Cong Wang](/assets/img/avatar_default.png)
As suggested by Eric, we need to make the xt_rateest hash table and its lock per netns to reduce lock contentions. Cc: Florian Westphal <fw@strlen.de> Cc: Eric Dumazet <edumazet@google.com> Cc: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com> Reviewed-by: Eric Dumazet <edumazet@google.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
27 lines
719 B
C
27 lines
719 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _XT_RATEEST_H
|
|
#define _XT_RATEEST_H
|
|
|
|
#include <net/gen_stats.h>
|
|
|
|
struct xt_rateest {
|
|
/* keep lock and bstats on same cache line to speedup xt_rateest_tg() */
|
|
struct gnet_stats_basic_packed bstats;
|
|
spinlock_t lock;
|
|
|
|
|
|
/* following fields not accessed in hot path */
|
|
unsigned int refcnt;
|
|
struct hlist_node list;
|
|
char name[IFNAMSIZ];
|
|
struct gnet_estimator params;
|
|
struct rcu_head rcu;
|
|
|
|
/* keep this field far away to speedup xt_rateest_mt() */
|
|
struct net_rate_estimator __rcu *rate_est;
|
|
};
|
|
|
|
struct xt_rateest *xt_rateest_lookup(struct net *net, const char *name);
|
|
void xt_rateest_put(struct net *net, struct xt_rateest *est);
|
|
|
|
#endif /* _XT_RATEEST_H */
|