On Sat, Mar 29, 2014 at 04:01:35PM -0700, Simon Horman wrote: > On Thu, Mar 20, 2014 at 09:37:14AM -0700, Ben Pfaff wrote: > > On Thu, Mar 20, 2014 at 05:34:23PM +0900, Simon Horman wrote: > > > When revalidating a flow convert xout.wc.masks, the mask calculated by > > > translation, to a key that relates to the flow present in the datapath. > > > Only > > > mask elements that relate to the flow will be included in the resulting > > > key. > > > This has the effect of filtering the mask based on 'flow'. > > > > > > In particular this filters out mpls_lse mask bits set on non-MPLS flows. > > > > > > This avoids flows being premeturely evicted from the datapath > > > because their calculated mask is too specific. > > > > I agree that that is a good thing to do, which has been a real problem > > in some cases, but I don't yet understand why there would be mpls_lse > > mask bits set on non-MPLS flows. Can you explain why (when?) that > > happens? > > Hi Ben, > > I'm not sure if there are other cases but one that I have isolated > is if a non-MPLS packet becomes an MPLS packet through a push MPLS action. > > In this case the mpls_lse mask bits are all set to 1 in flow_push_mpls() > during translation. This is in contrast to a mask produced based on the > original (non-MPLS flow) by odp_flow_key_to_mask(), where the mpls_lse bits > are all 0. > > And my analysis is that in the case of revalidate_ukey() the mask > comparison fails because of this miss-match, causing unnecessary eviction > of facets from the datapath.
Hi Ben, ping. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev