Lines Matching refs:police
82 struct tcf_police *police; in tcf_act_police_init() local
118 police = to_police(*a); in tcf_act_police_init()
134 err = gen_replace_estimator(&police->tcf_bstats, NULL, in tcf_act_police_init()
135 &police->tcf_rate_est, in tcf_act_police_init()
136 &police->tcf_lock, in tcf_act_police_init()
142 !gen_estimator_active(&police->tcf_rate_est))) { in tcf_act_police_init()
147 spin_lock_bh(&police->tcf_lock); in tcf_act_police_init()
149 police->tcfp_mtu = parm->mtu; in tcf_act_police_init()
150 if (police->tcfp_mtu == 0) { in tcf_act_police_init()
151 police->tcfp_mtu = ~0; in tcf_act_police_init()
153 police->tcfp_mtu = 255 << R_tab->rate.cell_log; in tcf_act_police_init()
156 police->rate_present = true; in tcf_act_police_init()
157 psched_ratecfg_precompute(&police->rate, &R_tab->rate, 0); in tcf_act_police_init()
160 police->rate_present = false; in tcf_act_police_init()
163 police->peak_present = true; in tcf_act_police_init()
164 psched_ratecfg_precompute(&police->peak, &P_tab->rate, 0); in tcf_act_police_init()
167 police->peak_present = false; in tcf_act_police_init()
171 police->tcfp_result = nla_get_u32(tb[TCA_POLICE_RESULT]); in tcf_act_police_init()
172 police->tcfp_burst = PSCHED_TICKS2NS(parm->burst); in tcf_act_police_init()
173 police->tcfp_toks = police->tcfp_burst; in tcf_act_police_init()
174 if (police->peak_present) { in tcf_act_police_init()
175 police->tcfp_mtu_ptoks = (s64) psched_l2t_ns(&police->peak, in tcf_act_police_init()
176 police->tcfp_mtu); in tcf_act_police_init()
177 police->tcfp_ptoks = police->tcfp_mtu_ptoks; in tcf_act_police_init()
179 police->tcf_action = parm->action; in tcf_act_police_init()
182 police->tcfp_ewma_rate = nla_get_u32(tb[TCA_POLICE_AVRATE]); in tcf_act_police_init()
184 spin_unlock_bh(&police->tcf_lock); in tcf_act_police_init()
188 police->tcfp_t_c = ktime_get_ns(); in tcf_act_police_init()
204 struct tcf_police *police = to_police(a); in tcf_act_police() local
209 spin_lock(&police->tcf_lock); in tcf_act_police()
211 bstats_update(&police->tcf_bstats, skb); in tcf_act_police()
212 tcf_lastuse_update(&police->tcf_tm); in tcf_act_police()
214 if (police->tcfp_ewma_rate) { in tcf_act_police()
217 if (!gen_estimator_read(&police->tcf_rate_est, &sample) || in tcf_act_police()
218 sample.bps >= police->tcfp_ewma_rate) { in tcf_act_police()
219 police->tcf_qstats.overlimits++; in tcf_act_police()
220 if (police->tcf_action == TC_ACT_SHOT) in tcf_act_police()
221 police->tcf_qstats.drops++; in tcf_act_police()
222 spin_unlock(&police->tcf_lock); in tcf_act_police()
223 return police->tcf_action; in tcf_act_police()
227 if (qdisc_pkt_len(skb) <= police->tcfp_mtu) { in tcf_act_police()
228 if (!police->rate_present) { in tcf_act_police()
229 spin_unlock(&police->tcf_lock); in tcf_act_police()
230 return police->tcfp_result; in tcf_act_police()
234 toks = min_t(s64, now - police->tcfp_t_c, in tcf_act_police()
235 police->tcfp_burst); in tcf_act_police()
236 if (police->peak_present) { in tcf_act_police()
237 ptoks = toks + police->tcfp_ptoks; in tcf_act_police()
238 if (ptoks > police->tcfp_mtu_ptoks) in tcf_act_police()
239 ptoks = police->tcfp_mtu_ptoks; in tcf_act_police()
240 ptoks -= (s64) psched_l2t_ns(&police->peak, in tcf_act_police()
243 toks += police->tcfp_toks; in tcf_act_police()
244 if (toks > police->tcfp_burst) in tcf_act_police()
245 toks = police->tcfp_burst; in tcf_act_police()
246 toks -= (s64) psched_l2t_ns(&police->rate, qdisc_pkt_len(skb)); in tcf_act_police()
248 police->tcfp_t_c = now; in tcf_act_police()
249 police->tcfp_toks = toks; in tcf_act_police()
250 police->tcfp_ptoks = ptoks; in tcf_act_police()
251 if (police->tcfp_result == TC_ACT_SHOT) in tcf_act_police()
252 police->tcf_qstats.drops++; in tcf_act_police()
253 spin_unlock(&police->tcf_lock); in tcf_act_police()
254 return police->tcfp_result; in tcf_act_police()
258 police->tcf_qstats.overlimits++; in tcf_act_police()
259 if (police->tcf_action == TC_ACT_SHOT) in tcf_act_police()
260 police->tcf_qstats.drops++; in tcf_act_police()
261 spin_unlock(&police->tcf_lock); in tcf_act_police()
262 return police->tcf_action; in tcf_act_police()
269 struct tcf_police *police = to_police(a); in tcf_act_police_dump() local
271 .index = police->tcf_index, in tcf_act_police_dump()
272 .action = police->tcf_action, in tcf_act_police_dump()
273 .mtu = police->tcfp_mtu, in tcf_act_police_dump()
274 .burst = PSCHED_NS2TICKS(police->tcfp_burst), in tcf_act_police_dump()
275 .refcnt = police->tcf_refcnt - ref, in tcf_act_police_dump()
276 .bindcnt = police->tcf_bindcnt - bind, in tcf_act_police_dump()
280 if (police->rate_present) in tcf_act_police_dump()
281 psched_ratecfg_getrate(&opt.rate, &police->rate); in tcf_act_police_dump()
282 if (police->peak_present) in tcf_act_police_dump()
283 psched_ratecfg_getrate(&opt.peakrate, &police->peak); in tcf_act_police_dump()
286 if (police->tcfp_result && in tcf_act_police_dump()
287 nla_put_u32(skb, TCA_POLICE_RESULT, police->tcfp_result)) in tcf_act_police_dump()
289 if (police->tcfp_ewma_rate && in tcf_act_police_dump()
290 nla_put_u32(skb, TCA_POLICE_AVRATE, police->tcfp_ewma_rate)) in tcf_act_police_dump()
293 t.install = jiffies_to_clock_t(jiffies - police->tcf_tm.install); in tcf_act_police_dump()
294 t.lastuse = jiffies_to_clock_t(jiffies - police->tcf_tm.lastuse); in tcf_act_police_dump()
295 t.firstuse = jiffies_to_clock_t(jiffies - police->tcf_tm.firstuse); in tcf_act_police_dump()
296 t.expires = jiffies_to_clock_t(police->tcf_tm.expires); in tcf_act_police_dump()