mirror of https://gitee.com/openkylin/linux.git
net sched actions: policer missing timestamp processing
Policer was not dumping or updating timestamps Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com> Acked-by: Cong Wang <xiyou.wangcong@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a9efad8b24
commit
3d3ed18151
|
@ -145,6 +145,8 @@ enum {
|
|||
TCA_POLICE_PEAKRATE,
|
||||
TCA_POLICE_AVRATE,
|
||||
TCA_POLICE_RESULT,
|
||||
TCA_POLICE_TM,
|
||||
TCA_POLICE_PAD,
|
||||
__TCA_POLICE_MAX
|
||||
#define TCA_POLICE_RESULT TCA_POLICE_RESULT
|
||||
};
|
||||
|
@ -173,7 +175,7 @@ enum {
|
|||
TCA_U32_DIVISOR,
|
||||
TCA_U32_SEL,
|
||||
TCA_U32_POLICE,
|
||||
TCA_U32_ACT,
|
||||
TCA_U32_ACT,
|
||||
TCA_U32_INDEV,
|
||||
TCA_U32_PCNT,
|
||||
TCA_U32_MARK,
|
||||
|
|
|
@ -239,6 +239,8 @@ static int tcf_act_police_locate(struct net *net, struct nlattr *nla,
|
|||
police->tcfp_t_c = ktime_get_ns();
|
||||
police->tcf_index = parm->index ? parm->index :
|
||||
tcf_hash_new_index(tn);
|
||||
police->tcf_tm.install = jiffies;
|
||||
police->tcf_tm.lastuse = jiffies;
|
||||
h = tcf_hash(police->tcf_index, POL_TAB_MASK);
|
||||
spin_lock_bh(&hinfo->lock);
|
||||
hlist_add_head(&police->tcf_head, &hinfo->htab[h]);
|
||||
|
@ -268,6 +270,7 @@ static int tcf_act_police(struct sk_buff *skb, const struct tc_action *a,
|
|||
spin_lock(&police->tcf_lock);
|
||||
|
||||
bstats_update(&police->tcf_bstats, skb);
|
||||
tcf_lastuse_update(&police->tcf_tm);
|
||||
|
||||
if (police->tcfp_ewma_rate &&
|
||||
police->tcf_rate_est.bps >= police->tcfp_ewma_rate) {
|
||||
|
@ -327,6 +330,7 @@ tcf_act_police_dump(struct sk_buff *skb, struct tc_action *a, int bind, int ref)
|
|||
.refcnt = police->tcf_refcnt - ref,
|
||||
.bindcnt = police->tcf_bindcnt - bind,
|
||||
};
|
||||
struct tcf_t t;
|
||||
|
||||
if (police->rate_present)
|
||||
psched_ratecfg_getrate(&opt.rate, &police->rate);
|
||||
|
@ -340,6 +344,13 @@ tcf_act_police_dump(struct sk_buff *skb, struct tc_action *a, int bind, int ref)
|
|||
if (police->tcfp_ewma_rate &&
|
||||
nla_put_u32(skb, TCA_POLICE_AVRATE, police->tcfp_ewma_rate))
|
||||
goto nla_put_failure;
|
||||
|
||||
t.install = jiffies_to_clock_t(jiffies - police->tcf_tm.install);
|
||||
t.lastuse = jiffies_to_clock_t(jiffies - police->tcf_tm.lastuse);
|
||||
t.expires = jiffies_to_clock_t(police->tcf_tm.expires);
|
||||
if (nla_put_64bit(skb, TCA_POLICE_TM, sizeof(t), &t, TCA_POLICE_PAD))
|
||||
goto nla_put_failure;
|
||||
|
||||
return skb->len;
|
||||
|
||||
nla_put_failure:
|
||||
|
|
Loading…
Reference in New Issue