> There's something funny going on with rule_dpif_lookup() calls here. > handle_flow_miss() calls rule_dpif_lookup(). It only uses it in the > handle_flow_miss_without_facet() case, and only to pass it to > handle_flow_miss_without_facet(). In the > handle_flow_miss_with_facet() case, it still calls rule_dpif_lookup(), > but it throws away the result without ever looking at it at all, and > then facet_create() calls rule_dpif_lookup() again.
Agreed, it's odd. Fixed in v3. > Previously, in creating a facet+subfacet for a slow-path flow due to > one packet showing up, we would do exactly one xlate. Now, I believe > we do one xlate in facet_create() and then one xlate in the loop in > handle_flow_miss_with_facet(). I don't think the difference in > performance is significant, because xlate of slow-path flows should be > cheap, but I thought it'd mention anyway in case you hadn't noticed > the change. Yep, I was aware. Didn't think it mattered. > > I found the new version of facet_check_consistency() hard to follow. > How about something more like this? I like your version better. Folded it in. > I think I see an opportunity for improvement in facet_lookup_valid(): > it would be cheaper if facet_revalidate()'s return value indicated > whether the facet had been removed. (This isn't new.) Something like > this: I've done this as a separate patch in v3. Ethan _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev