[ovs-discuss] [PATCH v2] [ovs-dev] [PATCH] QinQ: support more vlan headers.

Lilijun (Jerry, Cloud Networking) jerry.lilijun at huawei.com
Fri Sep 7 09:53:44 UTC 2018


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.lilijun at 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



More information about the discuss mailing list