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 _______________________________________________ discuss mailing list disc...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-discuss