On Oct 16, 2014, at 11:09 PM, Alex Wang <al...@nicira.com> wrote:

> Thx for the revision,
> 
> 
> +/* Removes 'rule' from 'cls', also destructing the 'rule'. */
> +static void
> +dpcls_remove(struct dpcls *cls, struct dpcls_rule *rule)
> +{
> +    struct dpcls_subtable *subtable;
> +
> +    ovs_assert(rule->mask);
> +
> +    INIT_CONTAINER(subtable, rule->mask, mask);
> +
> +    if (cmap_remove(&subtable->rules, &rule->cmap_node, rule->flow.hash)
> +        == 0) {
> +        dpcls_destroy_subtable(cls, subtable);
> +    }
> +
> +    rule->mask = NULL;
> +}
> 
> 
> The assignment here caused a segfault in test, since there could be pmd
> threads referring to the flow when dpcls_remove() is called.  We should not
> reset the pointer.
> 

Thank you for testing and debugging!

> 
> 32 UDP flows Spirent test showed no observable improvement but let's
> wait for the per-pmd-thread classifier/flow-table~
> 

This was expected, any improvement should be visible only when there is high 
churn on the megaflow cache.

> Otherwise, all tested and looked good~
> Acked-by: Alex Wang <al...@nicira.com>
> 

Pushed to master with the fix,

  Jarno

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to