const struct dpif_flow_stats *stats;
struct dpif_flow_dump dump;
const struct nlattr *key;
+ struct ofproto_dpif *ofproto;
size_t key_len;
dpif_flow_dump_start(&dump, backer->dpif);
while (dpif_flow_dump_next(&dump, &key, &key_len, NULL, NULL, &stats)) {
struct flow flow;
struct subfacet *subfacet;
- struct ofproto_dpif *ofproto;
struct ofport_dpif *ofport;
uint32_t key_hash;
ofproto->total_subfacet_count += hmap_count(&ofproto->subfacets);
ofproto->n_update_stats++;
- update_moving_averages(ofproto);
ofport = get_ofp_port(ofproto, flow.in_port);
if (ofport && ofport->tnl_port) {
run_fast_rl();
}
dpif_flow_dump_done(&dump);
+
+ HMAP_FOR_EACH (ofproto, all_ofproto_dpifs_node, &all_ofproto_dpifs) {
+ update_moving_averages(ofproto);
+ }
+
}
/* Calculates and returns the number of milliseconds of idle time after which
br0 (dummy@ovs-dummy):
lookups: hit:0 missed:61
flows: cur: 0, avg: 1.000, max: 1, life span: 10000(ms)
- hourly avg: add rate: 0.641/min, del rate: 0.635/min
- overall avg: add rate: 1.000/min, del rate: 0.984/min
+ hourly avg: add rate: 0.641/min, del rate: 0.641/min
+ overall avg: add rate: 1.000/min, del rate: 1.000/min
br0 65534/100: (dummy)
p1 1/1: (dummy)
p2 2/2: (dummy)