Looks good, thanks. Ethan
On Fri, Aug 17, 2012 at 11:27 PM, Ben Pfaff <b...@nicira.com> wrote: > The following commit will need to use a value other than a literal > time_msec() in one case. This commit is just preparation. > > Factoring the time_msec() call out of the loop in > handle_flow_miss_without_facet() is a really minor optimization. It isn't > the main point here. > > Signed-off-by: Ben Pfaff <b...@nicira.com> > --- > lib/dpif.c | 7 ++++--- > lib/dpif.h | 2 +- > ofproto/ofproto-dpif.c | 9 +++++---- > 3 files changed, 10 insertions(+), 8 deletions(-) > > diff --git a/lib/dpif.c b/lib/dpif.c > index 667e07c..2968966 100644 > --- a/lib/dpif.c > +++ b/lib/dpif.c > @@ -685,15 +685,16 @@ dpif_port_poll_wait(const struct dpif *dpif) > } > > /* Extracts the flow stats for a packet. The 'flow' and 'packet' > - * arguments must have been initialized through a call to flow_extract(). */ > + * arguments must have been initialized through a call to flow_extract(). > + * 'used' is stored into stats->used. */ > void > dpif_flow_stats_extract(const struct flow *flow, const struct ofpbuf *packet, > - struct dpif_flow_stats *stats) > + long long int used, struct dpif_flow_stats *stats) > { > stats->tcp_flags = packet_get_tcp_flags(packet, flow); > stats->n_bytes = packet->size; > stats->n_packets = 1; > - stats->used = time_msec(); > + stats->used = used; > } > > /* Appends a human-readable representation of 'stats' to 's'. */ > diff --git a/lib/dpif.h b/lib/dpif.h > index 0202915..45c78a5 100644 > --- a/lib/dpif.h > +++ b/lib/dpif.h > @@ -129,7 +129,7 @@ struct dpif_flow_stats { > }; > > void dpif_flow_stats_extract(const struct flow *, const struct ofpbuf > *packet, > - struct dpif_flow_stats *); > + long long int used, struct dpif_flow_stats *); > void dpif_flow_stats_format(const struct dpif_flow_stats *, struct ds *); > > enum dpif_flow_put_flags { > diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c > index 10d450e..2fcb025 100644 > --- a/ofproto/ofproto-dpif.c > +++ b/ofproto/ofproto-dpif.c > @@ -2866,6 +2866,7 @@ handle_flow_miss_without_facet(struct flow_miss *miss, > struct flow_miss_op *ops, size_t *n_ops) > { > struct ofproto_dpif *ofproto = ofproto_dpif_cast(rule->up.ofproto); > + long long int now = time_msec(); > struct action_xlate_ctx ctx; > struct ofpbuf *packet; > > @@ -2878,7 +2879,7 @@ handle_flow_miss_without_facet(struct flow_miss *miss, > > ofpbuf_use_stub(&odp_actions, op->stub, sizeof op->stub); > > - dpif_flow_stats_extract(&miss->flow, packet, &stats); > + dpif_flow_stats_extract(&miss->flow, packet, now, &stats); > rule_credit_stats(rule, &stats); > > action_xlate_ctx_init(&ctx, ofproto, &miss->flow, miss->initial_tci, > @@ -2929,7 +2930,7 @@ handle_flow_miss_with_facet(struct flow_miss *miss, > struct facet *facet, > subfacet_make_actions(subfacet, packet, &odp_actions); > } > > - dpif_flow_stats_extract(&facet->flow, packet, &stats); > + dpif_flow_stats_extract(&facet->flow, packet, time_msec(), &stats); > subfacet_update_stats(subfacet, &stats); > > if (subfacet->actions_len) { > @@ -4708,7 +4709,7 @@ rule_execute(struct rule *rule_, const struct flow > *flow, > uint64_t odp_actions_stub[1024 / 8]; > struct ofpbuf odp_actions; > > - dpif_flow_stats_extract(flow, packet, &stats); > + dpif_flow_stats_extract(flow, packet, time_msec(), &stats); > rule_credit_stats(rule, &stats); > > ofpbuf_use_stub(&odp_actions, odp_actions_stub, sizeof odp_actions_stub); > @@ -6434,7 +6435,7 @@ packet_out(struct ofproto *ofproto_, struct ofpbuf > *packet, > ofpbuf_use_stack(&key, &keybuf, sizeof keybuf); > odp_flow_key_from_flow(&key, flow); > > - dpif_flow_stats_extract(flow, packet, &stats); > + dpif_flow_stats_extract(flow, packet, time_msec(), &stats); > > action_xlate_ctx_init(&ctx, ofproto, flow, flow->vlan_tci, NULL, > packet_get_tcp_flags(packet, flow), packet); > -- > 1.7.2.5 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev