-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
net/sched: move police action structures to header
Move tcf_police_params, tcf_police and tc_police_compat structures to a header. Making them usable to other code for example drivers that would offload police actions to hardware. Signed-off-by: Pieter Jansen van Vuuren <pieter.jansenvanvuuren@netronome.com> Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
- Loading branch information
Pieter Jansen van Vuuren
authored and
David S. Miller
committed
May 6, 2019
1 parent
dfcb19f
commit fa762da
Showing
2 changed files
with
71 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
#ifndef __NET_TC_POLICE_H | ||
#define __NET_TC_POLICE_H | ||
|
||
#include <net/act_api.h> | ||
|
||
struct tcf_police_params { | ||
int tcfp_result; | ||
u32 tcfp_ewma_rate; | ||
s64 tcfp_burst; | ||
u32 tcfp_mtu; | ||
s64 tcfp_mtu_ptoks; | ||
struct psched_ratecfg rate; | ||
bool rate_present; | ||
struct psched_ratecfg peak; | ||
bool peak_present; | ||
struct rcu_head rcu; | ||
}; | ||
|
||
struct tcf_police { | ||
struct tc_action common; | ||
struct tcf_police_params __rcu *params; | ||
|
||
spinlock_t tcfp_lock ____cacheline_aligned_in_smp; | ||
s64 tcfp_toks; | ||
s64 tcfp_ptoks; | ||
s64 tcfp_t_c; | ||
}; | ||
|
||
#define to_police(pc) ((struct tcf_police *)pc) | ||
|
||
/* old policer structure from before tc actions */ | ||
struct tc_police_compat { | ||
u32 index; | ||
int action; | ||
u32 limit; | ||
u32 burst; | ||
u32 mtu; | ||
struct tc_ratespec rate; | ||
struct tc_ratespec peakrate; | ||
}; | ||
|
||
static inline bool is_tcf_police(const struct tc_action *act) | ||
{ | ||
#ifdef CONFIG_NET_CLS_ACT | ||
if (act->ops && act->ops->id == TCA_ID_POLICE) | ||
return true; | ||
#endif | ||
return false; | ||
} | ||
|
||
static inline u64 tcf_police_rate_bytes_ps(const struct tc_action *act) | ||
{ | ||
struct tcf_police *police = to_police(act); | ||
struct tcf_police_params *params; | ||
|
||
params = rcu_dereference_bh(police->params); | ||
return params->rate.rate_bytes_ps; | ||
} | ||
|
||
static inline s64 tcf_police_tcfp_burst(const struct tc_action *act) | ||
{ | ||
struct tcf_police *police = to_police(act); | ||
struct tcf_police_params *params; | ||
|
||
params = rcu_dereference_bh(police->params); | ||
return params->tcfp_burst; | ||
} | ||
|
||
#endif /* __NET_TC_POLICE_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters