diff options
author | Stephen Hemminger <shemminger@vyatta.com> | 2008-11-26 00:14:06 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-11-26 00:14:06 -0500 |
commit | c1b56878fb68e9c14070939ea4537ad4db79ffae (patch) | |
tree | 589f890f81e075380493905509244a0970d942f8 /net/sched | |
parent | 71bcb09a57894fa35591ce93dd972065eeecb63a (diff) |
tc: policing requires a rate estimator
Found that while trying average rate policing, it was possible to
request average rate policing without a rate estimator. This results
in no policing which is harmless but incorrect.
Since policing could be setup in two steps, need to check
in the kernel.
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched')
-rw-r--r-- | net/sched/act_police.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/net/sched/act_police.c b/net/sched/act_police.c index e19a0261144a..c39f60cea6ee 100644 --- a/net/sched/act_police.c +++ b/net/sched/act_police.c | |||
@@ -182,6 +182,12 @@ override: | |||
182 | R_tab = qdisc_get_rtab(&parm->rate, tb[TCA_POLICE_RATE]); | 182 | R_tab = qdisc_get_rtab(&parm->rate, tb[TCA_POLICE_RATE]); |
183 | if (R_tab == NULL) | 183 | if (R_tab == NULL) |
184 | goto failure; | 184 | goto failure; |
185 | |||
186 | if (!est && !gen_estimator_active(&police->tcf_rate_est)) { | ||
187 | err = -EINVAL; | ||
188 | goto failure; | ||
189 | } | ||
190 | |||
185 | if (parm->peakrate.rate) { | 191 | if (parm->peakrate.rate) { |
186 | P_tab = qdisc_get_rtab(&parm->peakrate, | 192 | P_tab = qdisc_get_rtab(&parm->peakrate, |
187 | tb[TCA_POLICE_PEAKRATE]); | 193 | tb[TCA_POLICE_PEAKRATE]); |