In my test, vlan-limit is set to 0 that means unlimited the count of vlan
headers.
ovs-vsctl set Open_vSwitch . other_config:vlan-limit=0

But in fact the macro FLOW_MAX_VLAN_HEADERS is defined as 2, so we can
only support max two vlan headers. It doesn't work as the config vlan-limit's
description.

So, when VM sends a packet already with two vlan headers, the vport configured 
with
qinq mode can't add another s-vlan headers. FLOW_MAX_VLAN_HEADERS need to
be larger to support more vlan headers.

Change-Id: I8449e308d406ce3757b43a2636ff0f326ca12a9d
Signed-off-by: Lilijun <jerry.lili...@huawei.com>
---
 include/openvswitch/flow.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/openvswitch/flow.h b/include/openvswitch/flow.h
index 5d2cf09..a09650c 100644
--- a/include/openvswitch/flow.h
+++ b/include/openvswitch/flow.h
@@ -72,7 +72,7 @@ const char *flow_tun_flag_to_string(uint32_t flags);
  *
  * We require this to be a multiple of 2 so that vlans[] in struct flow is a
  * multiple of 64 bits. */
-#define FLOW_MAX_VLAN_HEADERS 2
+#define FLOW_MAX_VLAN_HEADERS 4
 BUILD_ASSERT_DECL(FLOW_MAX_VLAN_HEADERS % 2 == 0);
 
 /* Legacy maximum VLAN headers */
@@ -165,7 +165,7 @@ BUILD_ASSERT_DECL(sizeof(struct ovs_key_nsh) % 
sizeof(uint64_t) == 0);
 
 /* Remember to update FLOW_WC_SEQ when changing 'struct flow'. */
 BUILD_ASSERT_DECL(offsetof(struct flow, igmp_group_ip4) + sizeof(uint32_t)
-                  == sizeof(struct flow_tnl) + sizeof(struct ovs_key_nsh) + 300
+                  == sizeof(struct flow_tnl) + sizeof(struct ovs_key_nsh) + 308
                   && FLOW_WC_SEQ == 41);
 
 /* Incremental points at which flow classification may be performed in
-- 
1.8.4.msysgit.0

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to