2ee22a90c7
Like act_gact, act_mirred can be lockless in packet processing 1) Use percpu stats 2) update lastuse only every clock tick to avoid false sharing 3) use rcu to protect tcfm_dev 4) Remove spinlock usage, as it is no longer needed. Next step : add multi queue capability to ifb device Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: Alexei Starovoitov <ast@plumgrid.com> Cc: Jamal Hadi Salim <jhs@mojatatu.com> Cc: John Fastabend <john.fastabend@gmail.com> Acked-by: Jamal Hadi Salim <jhs@mojatatu.com> Acked-by: Alexei Starovoitov <ast@plumgrid.com> Signed-off-by: David S. Miller <davem@davemloft.net>
18 lines
353 B
C
18 lines
353 B
C
#ifndef __NET_TC_MIR_H
|
|
#define __NET_TC_MIR_H
|
|
|
|
#include <net/act_api.h>
|
|
|
|
struct tcf_mirred {
|
|
struct tcf_common common;
|
|
int tcfm_eaction;
|
|
int tcfm_ifindex;
|
|
int tcfm_ok_push;
|
|
struct net_device __rcu *tcfm_dev;
|
|
struct list_head tcfm_list;
|
|
};
|
|
#define to_mirred(a) \
|
|
container_of(a->priv, struct tcf_mirred, common)
|
|
|
|
#endif /* __NET_TC_MIR_H */
|