On Mon, Dec 14, 2015 at 05:23:36PM -0800, Daniele Di Proietto wrote:
> In the ODP context an empty mask netlink attribute usually means that
> the flow should be an exact match.
> 
> odp_flow_key_to_mask() instead returns a struct flow_wildcards
> with matches only on recirc_id and vlan_tci.
> 
> A more appropriate behavior is to handle a missing (zero length) netlink
> mask specially (like we do in userspace and Linux datapath) and create
> an exact match flow_wildcards from the original flow.
> 
> This fixes a bug in revalidate_ukey(): every flow created with
> megaflows disabled would be revalidated away, because the mask would
> seem too generic. (Another possible fix would be to handle the special
> case of a missing mask in revalidate_ukey(), but this seems a more
> generic solution).
> 
> Signed-off-by: Daniele Di Proietto <[email protected]>
> Acked-by: Jarno Rajahalme <[email protected]>

I'm a little concerned about introducing this new code here to work with
fields using Netlink in odp-util.c through the metaflow code.  On
master, we've applied commit 9f861c9182ea42 (dpif-netdev: Don't use
metaflow to operate on userspace datapath fields.) to get rid of a
similar issue because, according to Jesse's commit message:

    There is a conceptual mismatch here because metaflow is operating on
    OpenFlow fields, not datapath ones. Even though they are generally very
    similar, there are subtle differences, which is why it is necessary to
    fix up the input port mask.

This backport introduces code into odp-util that is similar to the code
that Jesse deleted from dpif-netdev.  Is that OK?
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to