[ovs-dev] [PATCH RESEND v2 2/3] dpif-netdev: Add the burst size to buckets.
xiangxia.m.yue at gmail.com
xiangxia.m.yue at gmail.com
Wed Feb 24 12:21:49 UTC 2021
From: Tonghao Zhang <xiangxia.m.yue at gmail.com>
For now, the meter of the userspace datapath, don't include
the bucket burst size to buckets. This patch includes it now.
$ ovs-ofctl -O OpenFlow13 add-meter br0 \
'meter=1 pktps burst stats bands=type=drop rate=10000 burst_size=2000'
Signed-off-by: Tonghao Zhang <xiangxia.m.yue at gmail.com>
---
lib/dpif-netdev.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index 614f6fef6b77..94632b85b375 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -6209,7 +6209,7 @@ dp_netdev_run_meter(struct dp_netdev *dp, struct dp_packet_batch *packets_,
band = &meter->bands[m];
/* Update band's bucket. */
- max_bucket_size = band->rate * 1000ULL;
+ max_bucket_size = (band->burst_size + band->rate) * 1000ULL;
band->bucket += (uint64_t)delta_t * band->rate;
if (band->bucket > max_bucket_size) {
band->bucket = max_bucket_size;
@@ -6332,7 +6332,8 @@ dpif_netdev_meter_set(struct dpif *dpif, ofproto_meter_id meter_id,
meter->bands[i].rate = config->bands[i].rate;
meter->bands[i].burst_size = config->bands[i].burst_size;
/* Start with a full bucket. */
- meter->bands[i].bucket = meter->bands[i].rate * 1000ULL;
+ meter->bands[i].bucket =
+ (meter->bands[i].burst_size + meter->bands[i].rate) * 1000ULL;
/* Figure out max delta_t that is enough to fill any bucket. */
band_max_delta_t
--
2.27.0
More information about the dev
mailing list