X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ofproto%2Fofproto.c;h=08d80d89ae6334ae80b3ffd49388d427ac67fd41;hb=f7cd0081f525dd1d45fafc68397b5393196e978d;hp=2f6ca08c60fa8f99c4d23f7afe0ad861568219a9;hpb=c62b0064a0cdbd5f3ecfc2cda90999a9d7ec551d;p=openvswitch diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c index 2f6ca08c..08d80d89 100644 --- a/ofproto/ofproto.c +++ b/ofproto/ofproto.c @@ -3479,7 +3479,7 @@ query_stats(struct ofproto *p, struct rule *rule, ofpbuf_clear(&key); odp_flow_key_from_flow(&key, &facet->flow); - dpif_flow_get(p->dpif, 0, key.data, key.size, NULL, &stats); + dpif_flow_get(p->dpif, key.data, key.size, NULL, &stats); packet_count += stats.n_packets + facet->packet_count; byte_count += stats.n_bytes + facet->byte_count; @@ -4644,36 +4644,18 @@ facet_active_timeout(struct ofproto *ofproto, struct facet *facet) netflow_active_timeout_expired(ofproto->netflow, &facet->nf_flow)) { struct ofexpired expired; - expired.flow = facet->flow; - expired.packet_count = facet->packet_count; - expired.byte_count = facet->byte_count; - expired.used = facet->used; - - /* Get updated flow stats. - * - * XXX We could avoid this call entirely if (1) ofproto_update_used() - * updated TCP flags and (2) the dpif_flow_list_all() in - * ofproto_update_used() zeroed TCP flags. */ if (facet->installed) { - uint32_t keybuf[ODPUTIL_FLOW_KEY_U32S]; struct dpif_flow_stats stats; - struct ofpbuf key; - - ofpbuf_use_stack(&key, keybuf, sizeof keybuf); - odp_flow_key_from_flow(&key, &facet->flow); - - if (!dpif_flow_get(ofproto->dpif, ODPFF_ZERO_TCP_FLAGS, - key.data, key.size, NULL, &stats)) { - expired.packet_count += stats.n_packets; - expired.byte_count += stats.n_bytes; - if (stats.n_packets) { - facet_update_time(ofproto, facet, &stats); - netflow_flow_update_flags(&facet->nf_flow, - stats.tcp_flags); - } - } + + facet_put__(ofproto, facet, facet->actions, facet->actions_len, + &stats); + facet_update_stats(ofproto, facet, &stats); } + expired.flow = facet->flow; + expired.packet_count = facet->packet_count; + expired.byte_count = facet->byte_count; + expired.used = facet->used; netflow_expire(ofproto->netflow, &facet->nf_flow, &expired); } }