On Wed, Jul 06, 2016 at 07:58:56PM +0200, Simon Horman wrote:

[snip]

> --- a/lib/odp-util.c
> +++ b/lib/odp-util.c
...

> @@ -4614,14 +4623,38 @@ odp_key_to_pkt_metadata(const struct nlattr *key, 
> size_t key_len,
>              md->in_port.odp_port = nl_attr_get_odp_port(nla);
>              wanted_attrs &= ~(1u << OVS_KEY_ATTR_IN_PORT);
>              break;
> +        case OVS_KEY_ATTR_ETHERNET:
> +            wanted_attrs &= ~(1u << OVS_KEY_ATTR_ETHERNET);
> +            break;
> +        case OVS_KEY_ATTR_ETHERTYPE:
> +            ethertype = nl_attr_get_be16(nla);
> +            wanted_attrs &= ~(1u << OVS_KEY_ATTR_ETHERTYPE);
> +            break;
> +        case OVS_KEY_ATTR_IPV4:
> +            wanted_attrs &= ~(1u << OVS_KEY_ATTR_IPV4);
> +            break;
> +        case OVS_KEY_ATTR_IPV6:
> +            wanted_attrs &= ~(1u << OVS_KEY_ATTR_IPV6);
> +            break;
>          default:
>              break;
>          }
>  
>          if (!wanted_attrs) {
> -            return; /* Have everything. */
> +            break; /* Have everything. */
>          }
>      }
> +
> +    /* OVS_KEY_ATTR_ETHERTYPE present and OVS_KEY_ATTR_ETHERTYPE absent

The above line should be:

       /* OVS_KEY_ATTR_ETHERTYPE present and OVS_KEY_ATTR_ETHERNET absent

> +     * indicates Layer 3. */
> +    if (!(wanted_attrs & (1u << OVS_KEY_ATTR_ETHERTYPE)) &&
> +        wanted_attrs & (1u << OVS_KEY_ATTR_ETHERTYPE)) {

The above line should be:

           wanted_attrs & (1u << OVS_KEY_ATTR_ETHERNET)) {

> +        md->base_layer = LAYER_3;
> +        md->packet_ethertype = ethertype;
> +    } else {
> +        md->base_layer = LAYER_2;
> +    }
> +
>  }
>  
>  uint32_t

...
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to