mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 22:35:15 +00:00
Revert "tunneling: Avoid recirculation on datapath."
This reverts commit f1dac5128c
. When this
commit was introduced, it broke the 'make check-system-userspace'
testsuite. It appears that the new translation fails to modify the flow
in a way that would represent the flow as an encapsulated flow when the
traffic is patched through to the second bridge. As such, rather than
matching on, for example, "ip,proto=47" for gre, it would use the inner
packet's flow headers. It also results in problems reporting statistics,
as the tunnel's header is not reflected in subsequent statistics and
truncation is not properly applied during translation.
While a refreshed approach to solving the above problem is formed,
revert this patch.
Reported-at: https://mail.openvswitch.org/pipermail/ovs-dev/2017-May/331972.html
Signed-off-by: Joe Stringer <joe@ovn.org>
Acked-by: Greg Rose <gvrose8192@gmail.com>
This commit is contained in:
@@ -4970,8 +4970,24 @@ dp_execute_cb(void *aux_, struct dp_packet_batch *packets_,
|
||||
|
||||
case OVS_ACTION_ATTR_TUNNEL_PUSH:
|
||||
if (*depth < MAX_RECIRC_DEPTH) {
|
||||
struct dp_packet_batch tnl_pkt;
|
||||
struct dp_packet_batch *orig_packets_ = packets_;
|
||||
int err;
|
||||
|
||||
if (!may_steal) {
|
||||
dp_packet_batch_clone(&tnl_pkt, packets_);
|
||||
packets_ = &tnl_pkt;
|
||||
dp_packet_batch_reset_cutlen(orig_packets_);
|
||||
}
|
||||
|
||||
dp_packet_batch_apply_cutlen(packets_);
|
||||
push_tnl_action(pmd, a, packets_);
|
||||
|
||||
err = push_tnl_action(pmd, a, packets_);
|
||||
if (!err) {
|
||||
(*depth)++;
|
||||
dp_netdev_recirculate(pmd, packets_);
|
||||
(*depth)--;
|
||||
}
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
Reference in New Issue
Block a user