Acked On Tuesday, June 3, 2014, Joe Stringer <joestrin...@nicira.com> wrote:
> One of the reasons that xlate_cache was introduced was to ensure that > statistics were attributed to the correct rules and interfaces according > to the flow that was installed into the datapath, rather than according > to the current state of the flow table. > > This patch makes the revalidators use the xlate_cache to attribute stats > when full revalidation is required. Furthermore, rather than deleting > the xcache when revalidating, keep it around. > > Signed-off-by: Joe Stringer <joestrin...@nicira.com <javascript:;>> > --- > v2: Don't delete the old xcache when revalidating. > Removed extraneous "ukey->xcache = NULL". > --- > ofproto/ofproto-dpif-upcall.c | 23 ++++++++++++----------- > 1 file changed, 12 insertions(+), 11 deletions(-) > > diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c > index 90e18e3..b4aa48b 100644 > --- a/ofproto/ofproto-dpif-upcall.c > +++ b/ofproto/ofproto-dpif-upcall.c > @@ -1148,10 +1148,16 @@ revalidate_ukey(struct udpif *udpif, struct > udpif_key *ukey, > } > > may_learn = push.n_packets > 0; > - if (ukey->xcache && !udpif->need_revalidate) { > + if (ukey->xcache) { > xlate_push_stats(ukey->xcache, may_learn, &push); > - ok = true; > - goto exit; > + if (udpif->need_revalidate) { > + push.n_packets = 0; > + push.n_bytes = 0; > + may_learn = false; > + } else { > + ok = true; > + goto exit; > + } > } > > error = xlate_receive(udpif->backer, NULL, ukey->key, ukey->key_len, > &flow, > @@ -1160,16 +1166,11 @@ revalidate_ukey(struct udpif *udpif, struct > udpif_key *ukey, > goto exit; > } > > - if (udpif->need_revalidate) { > - xlate_cache_clear(ukey->xcache); > - } > - if (!ukey->xcache) { > - ukey->xcache = xlate_cache_new(); > - } > - > xlate_in_init(&xin, ofproto, &flow, NULL, push.tcp_flags, NULL); > xin.resubmit_stats = push.n_packets ? &push : NULL; > - xin.xcache = ukey->xcache; > + if (!ukey->xcache) { > + ukey->xcache = xin.xcache = xlate_cache_new(); > + } > xin.may_learn = may_learn; > xin.skip_wildcards = !udpif->need_revalidate; > xlate_actions(&xin, &xout); > -- > 1.7.10.4 > > _______________________________________________ > dev mailing list > dev@openvswitch.org <javascript:;> > http://openvswitch.org/mailman/listinfo/dev >
_______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev