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