diff options
author | Chenmin Sun <chenmin.sun@intel.com> | 2019-12-05 01:41:35 +0800 |
---|---|---|
committer | John Lo <loj@cisco.com> | 2019-12-05 13:19:54 +0000 |
commit | 814e898eba5b3c52515b878f673fc6aa60063ad9 (patch) | |
tree | 341c409b0ee51ab503cbd23e4070e6b5f76785c8 | |
parent | 9fcfcb0a9e9f4ec73ccfb3ed81b73f1a5517e41b (diff) |
vxlan: fix vxlan hw offload issue
Type: fix
Since Vxlan hw offload jumps the ethernet-input node, so needs to
adjust the data offset accordingly
In original code, the current_data is 0 when arriving vxlan-flow-input
node(due to no graph node before it, except the dpdk-input), so this
code block cannot find the correct vxlan header:
enum
{ payload_offset = sizeof (ip4_vxlan_header_t) };
vlib_buffer_advance (b0, payload_offset);
see code in src/vnet/vxlan/decap.c, function vxlan4_flow_input_node
This patch fixes this issue
Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: Iab4af7a7dc3b69a117a4c9ea1c59662669a6438c
(cherry picked from commit 1ec9fdbf29aedcdd4040feb635971c3f87a1cfdf)
-rw-r--r-- | src/vnet/vxlan/vxlan.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/vnet/vxlan/vxlan.c b/src/vnet/vxlan/vxlan.c index c274cdb0120..7deb362cfcc 100644 --- a/src/vnet/vxlan/vxlan.c +++ b/src/vnet/vxlan/vxlan.c @@ -1134,9 +1134,11 @@ vnet_vxlan_add_del_rx_flow (u32 hw_if_index, u32 t_index, int is_add) vxlan_main_t *vxm = &vxlan_main; vnet_flow_t flow = { .actions = - VNET_FLOW_ACTION_REDIRECT_TO_NODE | VNET_FLOW_ACTION_MARK, + VNET_FLOW_ACTION_REDIRECT_TO_NODE | VNET_FLOW_ACTION_MARK | + VNET_FLOW_ACTION_BUFFER_ADVANCE, .mark_flow_id = t->dev_instance + vxm->flow_id_start, .redirect_node_index = vxlan4_flow_input_node.index, + .buffer_advance = sizeof (ethernet_header_t), .type = VNET_FLOW_TYPE_IP4_VXLAN, .ip4_vxlan = { .src_addr = t->dst.ip4, |