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