- const uint64_t bkt_cyc = rte_rdtsc() - tim_ring->ring_start_cyc;
- uint32_t bucket = rte_reciprocal_divide_u64(bkt_cyc,
- &tim_ring->fast_div) + rel_bkt;
- uint32_t mirr_bucket = 0;
-
- if (flag & OTX2_TIM_BKT_MOD) {
- bucket = bucket % tim_ring->nb_bkts;
- mirr_bucket = (bucket + (tim_ring->nb_bkts >> 1)) %
- tim_ring->nb_bkts;
- }
- if (flag & OTX2_TIM_BKT_AND) {
- bucket = bucket & (tim_ring->nb_bkts - 1);
- mirr_bucket = (bucket + (tim_ring->nb_bkts >> 1)) &
- (tim_ring->nb_bkts - 1);
- }
-
+ const uint64_t bkt_cyc = tim_cntvct() - tim_ring->ring_start_cyc;
+ uint64_t bucket =
+ rte_reciprocal_divide_u64(bkt_cyc, &tim_ring->fast_div) +
+ rel_bkt;
+ uint64_t mirr_bucket = 0;
+
+ bucket =
+ tim_bkt_fast_mod(bucket, tim_ring->nb_bkts, tim_ring->fast_bkt);
+ mirr_bucket = tim_bkt_fast_mod(bucket + (tim_ring->nb_bkts >> 1),
+ tim_ring->nb_bkts, tim_ring->fast_bkt);