5#ifndef __INCLUDE_RTE_METER_H__
6#define __INCLUDE_RTE_METER_H__
72struct rte_meter_srtcm_profile;
78struct rte_meter_trtcm_profile;
84struct rte_meter_trtcm_rfc4115_profile;
87struct rte_meter_srtcm;
137 struct rte_meter_trtcm_rfc4115_profile *p,
152 struct rte_meter_srtcm_profile *p);
166 struct rte_meter_trtcm_profile *p);
180 struct rte_meter_trtcm_rfc4115_profile *p);
198 struct rte_meter_srtcm_profile *p,
220 struct rte_meter_srtcm_profile *p,
241 struct rte_meter_trtcm_profile *p,
263 struct rte_meter_trtcm_profile *p,
285 struct rte_meter_trtcm_rfc4115_profile *p,
308 struct rte_meter_trtcm_rfc4115_profile *p,
317struct rte_meter_srtcm_profile {
324 uint64_t cir_bytes_per_period;
329struct rte_meter_srtcm {
335struct rte_meter_trtcm_profile {
342 uint64_t cir_bytes_per_period;
346 uint64_t pir_bytes_per_period;
365struct rte_meter_trtcm_rfc4115_profile {
372 uint64_t cir_bytes_per_period;
376 uint64_t eir_bytes_per_period;
397 struct rte_meter_srtcm_profile *p,
401 uint64_t time_diff, n_periods, tc, te;
404 time_diff = time - m->time;
405 n_periods = time_diff / p->cir_period;
406 m->time += n_periods * p->cir_period;
409 tc = m->tc + n_periods * p->cir_bytes_per_period;
420 m->tc = tc - pkt_len;
427 m->te = te - pkt_len;
438 struct rte_meter_srtcm_profile *p,
443 uint64_t time_diff, n_periods, tc, te;
446 time_diff = time - m->time;
447 n_periods = time_diff / p->cir_period;
448 m->time += n_periods * p->cir_period;
451 tc = m->tc + n_periods * p->cir_bytes_per_period;
462 m->tc = tc - pkt_len;
469 m->te = te - pkt_len;
480 struct rte_meter_trtcm_profile *p,
484 uint64_t time_diff_tc, time_diff_tp, n_periods_tc, n_periods_tp, tc, tp;
487 time_diff_tc = time - m->
time_tc;
488 time_diff_tp = time - m->
time_tp;
489 n_periods_tc = time_diff_tc / p->cir_period;
490 n_periods_tp = time_diff_tp / p->pir_period;
491 m->
time_tc += n_periods_tc * p->cir_period;
492 m->
time_tp += n_periods_tp * p->pir_period;
494 tc = m->
tc + n_periods_tc * p->cir_bytes_per_period;
498 tp = m->
tp + n_periods_tp * p->pir_bytes_per_period;
511 m->
tp = tp - pkt_len;
515 m->
tc = tc - pkt_len;
516 m->
tp = tp - pkt_len;
522 struct rte_meter_trtcm_profile *p,
527 uint64_t time_diff_tc, time_diff_tp, n_periods_tc, n_periods_tp, tc, tp;
530 time_diff_tc = time - m->
time_tc;
531 time_diff_tp = time - m->
time_tp;
532 n_periods_tc = time_diff_tc / p->cir_period;
533 n_periods_tp = time_diff_tp / p->pir_period;
534 m->
time_tc += n_periods_tc * p->cir_period;
535 m->
time_tp += n_periods_tp * p->pir_period;
537 tc = m->
tc + n_periods_tc * p->cir_bytes_per_period;
541 tp = m->
tp + n_periods_tp * p->pir_bytes_per_period;
554 m->
tp = tp - pkt_len;
558 m->
tc = tc - pkt_len;
559 m->
tp = tp - pkt_len;
566 struct rte_meter_trtcm_rfc4115_profile *p,
570 uint64_t time_diff_tc, time_diff_te, n_periods_tc, n_periods_te, tc, te;
573 time_diff_tc = time - m->
time_tc;
574 time_diff_te = time - m->
time_te;
575 n_periods_tc = time_diff_tc / p->cir_period;
576 n_periods_te = time_diff_te / p->eir_period;
577 m->
time_tc += n_periods_tc * p->cir_period;
578 m->
time_te += n_periods_te * p->eir_period;
580 tc = m->
tc + n_periods_tc * p->cir_bytes_per_period;
584 te = m->
te + n_periods_te * p->eir_bytes_per_period;
590 m->
tc = tc - pkt_len;
596 m->
te = te - pkt_len;
609 struct rte_meter_trtcm_rfc4115_profile *p,
614 uint64_t time_diff_tc, time_diff_te, n_periods_tc, n_periods_te, tc, te;
617 time_diff_tc = time - m->
time_tc;
618 time_diff_te = time - m->
time_te;
619 n_periods_tc = time_diff_tc / p->cir_period;
620 n_periods_te = time_diff_te / p->eir_period;
621 m->
time_tc += n_periods_tc * p->cir_period;
622 m->
time_te += n_periods_te * p->eir_period;
624 tc = m->
tc + n_periods_tc * p->cir_bytes_per_period;
628 te = m->
te + n_periods_te * p->eir_bytes_per_period;
634 m->
tc = tc - pkt_len;
641 m->
te = te - pkt_len;
static enum rte_color rte_meter_trtcm_rfc4115_color_blind_check(struct rte_meter_trtcm_rfc4115 *m, struct rte_meter_trtcm_rfc4115_profile *p, uint64_t time, uint32_t pkt_len)
static enum rte_color rte_meter_trtcm_rfc4115_color_aware_check(struct rte_meter_trtcm_rfc4115 *m, struct rte_meter_trtcm_rfc4115_profile *p, uint64_t time, uint32_t pkt_len, enum rte_color pkt_color)
static enum rte_color rte_meter_trtcm_color_blind_check(struct rte_meter_trtcm *m, struct rte_meter_trtcm_profile *p, uint64_t time, uint32_t pkt_len)
static enum rte_color rte_meter_trtcm_color_aware_check(struct rte_meter_trtcm *m, struct rte_meter_trtcm_profile *p, uint64_t time, uint32_t pkt_len, enum rte_color pkt_color)
int rte_meter_trtcm_rfc4115_profile_config(struct rte_meter_trtcm_rfc4115_profile *p, struct rte_meter_trtcm_rfc4115_params *params)
int rte_meter_srtcm_profile_config(struct rte_meter_srtcm_profile *p, struct rte_meter_srtcm_params *params)
int rte_meter_srtcm_config(struct rte_meter_srtcm *m, struct rte_meter_srtcm_profile *p)
int rte_meter_trtcm_rfc4115_config(struct rte_meter_trtcm_rfc4115 *m, struct rte_meter_trtcm_rfc4115_profile *p)
static enum rte_color rte_meter_srtcm_color_aware_check(struct rte_meter_srtcm *m, struct rte_meter_srtcm_profile *p, uint64_t time, uint32_t pkt_len, enum rte_color pkt_color)
int rte_meter_trtcm_config(struct rte_meter_trtcm *m, struct rte_meter_trtcm_profile *p)
int rte_meter_trtcm_profile_config(struct rte_meter_trtcm_profile *p, struct rte_meter_trtcm_params *params)
static enum rte_color rte_meter_srtcm_color_blind_check(struct rte_meter_srtcm *m, struct rte_meter_srtcm_profile *p, uint64_t time, uint32_t pkt_len)