On 2017-01-11 01:14, Jarno Rajahalme wrote:

Unwildcarding of set fields is only done for practical reasons in the userspace 
code, and could be optimized away, especially for recent enough datapaths that 
implement the masked set action.

Currently, the same bit mask is used to mark what fields have been masked and 
what fields have been set. It would be possible to add a separate flow mask for 
setting and use the current one only for matching. It will cause some 
additional overhead on the upcall processing, but will generate better 
megaflows. I remember looking at this when implementing datapath masked set 
actions, and vaguely recall someone else also having a go at this later?
Not quite sure I understand why set fields have to be tracked. Can you explain a bit and point me to the place in the code where the data in wc is used in this respect?
In the context of L3 tunneling and PTAP the current behavior produces incorrect 
results because setting the dl_dst of a packet received from an L3 port adds a 
match on dl_dst==00:00:00:00:00:00 to the Megaflow which can never match 
because the packet received from the L3 tunnel does not have a dl_dst field.

We might have some code sanitizing the mask that may take care of this, as 
there are also other cases where we are setting fields that do not exist in the 
incoming packet.
Yes, that's what we have done now in xlate_wc_finish() to clean up. But my gut feeling is that this shouldn't be needed in the first place. Maybe I'm still missing some essential piece?

Regards, Jan

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to