Home | History | Annotate | Download | only in sch

Lines Matching defs:tbf

2  * lib/route/sch/tbf.c		TBF Qdisc
14 * @defgroup tbf Token Bucket Filter (TBF)
29 #include <netlink/route/sch/tbf.h>
59 struct rtnl_tbf *tbf;
65 tbf = tbf_alloc(q);
66 if (!tbf)
74 tbf->qt_limit = opts.limit;
75 tbf->qt_mpu = opts.rate.mpu;
77 rtnl_copy_ratespec(&tbf->qt_rate, &opts.rate);
78 tbf->qt_rate_txtime = opts.buffer;
81 tbf->qt_rate_bucket = bufsize;
83 rtnl_copy_ratespec(&tbf->qt_peakrate, &opts.peakrate);
84 tbf->qt_peakrate_txtime = opts.mtu;
87 tbf->qt_peakrate_bucket = bufsize;
89 tbf->qt_mask = (TBF_ATTR_LIMIT | TBF_ATTR_MPU | TBF_ATTR_RATE |
105 struct rtnl_tbf *tbf = tbf_qdisc(qdisc);
107 if (!tbf)
110 r = nl_cancel_down_bytes(tbf->qt_rate.rs_rate, &ru);
111 rbit = nl_cancel_down_bits(tbf->qt_rate.rs_rate*8, &rubit);
112 lim = nl_cancel_down_bytes(tbf->qt_limit, &limu);
120 struct rtnl_tbf *tbf = tbf_qdisc(qdisc);
122 if (!tbf)
127 double bs = nl_cancel_down_bytes(tbf->qt_rate_bucket, &bu);
128 double cl = nl_cancel_down_bytes(1 << tbf->qt_rate.rs_cell_log,
133 tbf->qt_mpu, bs, bu, cl, cu);
137 if (tbf->qt_mask & TBF_ATTR_PEAKRATE) {
141 pr = nl_cancel_down_bytes(tbf->qt_peakrate.rs_rate, &pru);
142 prb = nl_cancel_down_bits(tbf->qt_peakrate.rs_rate * 8, &prbu);
143 bs = nl_cancel_down_bits(tbf->qt_peakrate_bucket, &bsu);
144 cl = nl_cancel_down_bits(1 << tbf->qt_peakrate.rs_cell_log,
157 struct rtnl_tbf *tbf;
165 tbf = tbf_qdisc(qdisc);
166 if (!tbf)
169 if (!(tbf->qt_mask & required) != required)
172 opts.limit = tbf->qt_limit;
173 opts.buffer = tbf->qt_rate_txtime;
174 tbf->qt_rate.rs_mpu = tbf->qt_mpu;
175 rtnl_rcopy_ratespec(&opts.rate, &tbf->qt_rate);
177 rtnl_tc_build_rate_table(rtab, tbf->qt_mpu & 0xff, tbf->qt_mpu >> 8,
178 1 << tbf->qt_rate.rs_cell_log,
179 tbf->qt_rate.rs_rate);
181 if (tbf->qt_mask & TBF_ATTR_PEAKRATE) {
182 opts.mtu = tbf->qt_peakrate_txtime;
183 tbf->qt_peakrate.rs_mpu = tbf->qt_mpu;
184 rtnl_rcopy_ratespec(&opts.peakrate, &tbf->qt_peakrate);
186 rtnl_tc_build_rate_table(ptab, tbf->qt_mpu & 0xff,
187 tbf->qt_mpu >> 8,
188 1 << tbf->qt_peakrate.rs_cell_log,
189 tbf->qt_peakrate.rs_rate);
199 if (tbf->qt_mask & TBF_ATTR_PEAKRATE)
215 * Set limit of TBF qdisc.
216 * @arg qdisc TBF qdisc to be modified.
222 struct rtnl_tbf *tbf;
224 tbf = tbf_alloc(qdisc);
225 if (!tbf)
228 tbf->qt_limit = limit;
229 tbf->qt_mask |= TBF_ATTR_LIMIT;
246 * Set limit of TBF qdisc by latency.
247 * @arg qdisc TBF qdisc to be modified.
265 struct rtnl_tbf *tbf;
268 tbf = tbf_alloc(qdisc);
269 if (!tbf)
272 if (!(tbf->qt_mask & TBF_ATTR_RATE))
275 limit = calc_limit(&tbf->qt_rate, latency, tbf->qt_rate_bucket);
277 if (tbf->qt_mask & TBF_ATTR_PEAKRATE) {
278 limit2 = calc_limit(&tbf->qt_peakrate, latency,
279 tbf->qt_peakrate_bucket);
289 * Get limit of TBF qdisc.
290 * @arg qdisc TBF qdisc.
295 struct rtnl_tbf *tbf;
297 tbf = tbf_qdisc(qdisc);
298 if (tbf && (tbf->qt_mask & TBF_ATTR_LIMIT))
299 return tbf->qt_limit;
305 * Set MPU of TBF qdisc.
306 * @arg qdisc TBF qdisc to be modified.
312 struct rtnl_tbf *tbf;
314 tbf = tbf_alloc(qdisc);
315 if (!tbf)
318 tbf->qt_mpu = mpu;
319 tbf->qt_mask |= TBF_ATTR_MPU;
325 * Get MPU of TBF qdisc.
326 * @arg qdisc TBF qdisc.
331 struct rtnl_tbf *tbf;
333 tbf = tbf_qdisc(qdisc);
334 if (tbf && (tbf->qt_mask & TBF_ATTR_MPU))
335 return tbf->qt_mpu;
358 * Set rate of TBF qdisc.
359 * @arg qdisc TBF qdisc to be modified.
368 struct rtnl_tbf *tbf;
371 tbf = tbf_alloc(qdisc);
372 if (!tbf)
379 tbf->qt_rate.rs_rate = rate;
380 tbf->qt_rate_bucket = bucket;
381 tbf->qt_rate.rs_cell_log = cell_log;
382 tbf->qt_rate_txtime = rtnl_tc_calc_txtime(bucket, rate);
383 tbf->qt_mask |= TBF_ATTR_RATE;
389 * Get rate of TBF qdisc.
390 * @arg qdisc TBF qdisc.
395 struct rtnl_tbf *tbf;
397 tbf = tbf_qdisc(qdisc);
398 if (tbf && (tbf->qt_mask & TBF_ATTR_RATE))
399 return tbf->qt_rate.rs_rate;
405 * Get rate bucket size of TBF qdisc.
406 * @arg qdisc TBF qdisc.
411 struct rtnl_tbf *tbf;
413 tbf = tbf_qdisc(qdisc);
414 if (tbf && (tbf->qt_mask & TBF_ATTR_RATE))
415 return tbf->qt_rate_bucket;
421 * Get rate cell size of TBF qdisc.
422 * @arg qdisc TBF qdisc.
427 struct rtnl_tbf *tbf;
429 tbf = tbf_qdisc(qdisc);
430 if (tbf && (tbf->qt_mask & TBF_ATTR_RATE))
431 return (1 << tbf->qt_rate.rs_cell_log);
437 * Set peak rate of TBF qdisc.
438 * @arg qdisc TBF qdisc to be modified.
447 struct rtnl_tbf *tbf;
450 tbf = tbf_alloc(qdisc);
451 if (!tbf)
458 tbf->qt_peakrate.rs_rate = rate;
459 tbf->qt_peakrate_bucket = bucket;
460 tbf->qt_peakrate.rs_cell_log = cell_log;
461 tbf->qt_peakrate_txtime = rtnl_tc_calc_txtime(bucket, rate);
463 tbf->qt_mask |= TBF_ATTR_PEAKRATE;
469 * Get peak rate of TBF qdisc.
470 * @arg qdisc TBF qdisc.
475 struct rtnl_tbf *tbf;
477 tbf = tbf_qdisc(qdisc);
478 if (tbf && (tbf->qt_mask & TBF_ATTR_PEAKRATE))
479 return tbf->qt_peakrate.rs_rate;
485 * Get peak rate bucket size of TBF qdisc.
486 * @arg qdisc TBF qdisc.
491 struct rtnl_tbf *tbf;
493 tbf = tbf_qdisc(qdisc);
494 if (tbf && (tbf->qt_mask & TBF_ATTR_PEAKRATE))
495 return tbf->qt_peakrate_bucket;
501 * Get peak rate cell size of TBF qdisc.
502 * @arg qdisc TBF qdisc.
507 struct rtnl_tbf *tbf;
509 tbf = tbf_qdisc(qdisc);
510 if (tbf && (tbf->qt_mask & TBF_ATTR_PEAKRATE))
511 return (1 << tbf->qt_peakrate.rs_cell_log);
519 .qo_kind = "tbf",