[ovs-dev] [PATCHv3] revalidator: Use xcache when revalidation is required.
Joe Stringer
joestringer at nicira.com
Thu Jun 5 01:32:30 UTC 2014
Thanks, applied to master.
On 5 June 2014 11:48, Alex Wang <alexw at nicira.com> wrote:
> Looks good to me,
>
>
> Acked-by: Alex Wang <alexw at nicira.com>
>
>
> On Wed, Jun 4, 2014 at 3:08 PM, Joe Stringer <joestringer at 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, as the statistics belong to the old
>> ruleset. However, when revalidating, the rules may have changed while
>> leaving the datapath flows intact, so we still re-create the xcache at
>> that point.
>>
>> Signed-off-by: Joe Stringer <joestringer at nicira.com>
>> ---
>> v3: Clear the xcache when revalidating.
>> v2: Don't delete the old xcache when revalidating.
>> Removed extraneous "ukey->xcache = NULL".
>> Reset may_learn when pushing stats.
>> ---
>> ofproto/ofproto-dpif-upcall.c | 16 ++++++++++------
>> 1 file changed, 10 insertions(+), 6 deletions(-)
>>
>> diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c
>> index 90e18e3..67a0ed8 100644
>> --- a/ofproto/ofproto-dpif-upcall.c
>> +++ b/ofproto/ofproto-dpif-upcall.c
>> @@ -1148,10 +1148,17 @@ 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) {
>> + xlate_cache_clear(ukey->xcache);
>> + 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,9 +1167,6 @@ 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();
>> }
>> --
>> 1.7.10.4
>>
>> _______________________________________________
>> dev mailing list
>> dev at openvswitch.org
>> http://openvswitch.org/mailman/listinfo/dev
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openvswitch.org/pipermail/ovs-dev/attachments/20140605/f073224f/attachment-0005.html>
More information about the dev
mailing list