datapath: Bug fix: Kernel rejects flow with valid vlan field
authorAndy Zhou <azhou@nicira.com>
Wed, 26 Jun 2013 15:54:45 +0000 (08:54 -0700)
committerJesse Gross <jesse@nicira.com>
Fri, 28 Jun 2013 02:12:09 +0000 (19:12 -0700)
Bug #18233

Signed-off-by: Andy Zhou <azhou@nicira.com>
Signed-off-by: Jesse Gross <jesse@nicira.com>
datapath/flow.c

index 99c4984..041b327 100644 (file)
@@ -1327,8 +1327,9 @@ static int ovs_key_from_nlattrs(struct sw_flow_match *match,  u64 attrs,
                __be16 tci;
 
                tci = nla_get_be16(a[OVS_KEY_ATTR_VLAN]);
-               if (!is_mask && (tci & htons(VLAN_TAG_PRESENT)))
-                       return -EINVAL;
+               if (!is_mask)
+                       if (!(tci & htons(VLAN_TAG_PRESENT)))
+                               return -EINVAL;
 
                SW_FLOW_KEY_PUT(match, eth.tci, tci, is_mask);
                attrs &= ~(1ULL << OVS_KEY_ATTR_VLAN);