From: Simon Horman Date: Thu, 30 Jun 2011 11:34:15 +0000 (+0900) Subject: ofproto: Simplify bucket finding in facet_max_idle() X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f11c1ef433cfa363c779176007cbcb9d73b3203a;p=openvswitch ofproto: Simplify bucket finding in facet_max_idle() The existing dual-loop setup is unnecessary as the outer loop only skips to the first non-zero value and then exits once the inner loop completes. Zero values in the inner loop have no affect on its logic. Signed-off-by: Simon Horman [pushed declaration of subtotal out to function scope] Signed-off-by: Ben Pfaff --- diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index c062ec3d..c3ef8f75 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -1863,8 +1863,8 @@ facet_max_idle(const struct ofproto_dpif *ofproto) enum { BUCKET_WIDTH = ROUND_UP(100, TIME_UPDATE_INTERVAL) }; enum { N_BUCKETS = 5000 / BUCKET_WIDTH }; int buckets[N_BUCKETS] = { 0 }; + int total, subtotal, bucket; struct facet *facet; - int total, bucket; long long int now; int i; @@ -1884,15 +1884,10 @@ facet_max_idle(const struct ofproto_dpif *ofproto) } /* Find the first bucket whose flows should be expired. */ - for (bucket = 0; bucket < N_BUCKETS; bucket++) { - if (buckets[bucket]) { - int subtotal = 0; - do { - subtotal += buckets[bucket++]; - } while (bucket < N_BUCKETS && subtotal < MAX(1000, total / 100)); - break; - } - } + subtotal = bucket = 0; + do { + subtotal += buckets[bucket++]; + } while (bucket < N_BUCKETS && subtotal < MAX(1000, total / 100)); if (VLOG_IS_DBG_ENABLED()) { struct ds s;