The main goal of this series is to avoid invocation of xlate_lookup() in case of recirculation (except recirc due to bond), because it can return pointer to a wrong xport. For instance, if L3 packet with MPLS label is received on a L3 tunnel port and pop_mpls + resubmit actions are performed, then first packet_type is changed due to pushing a dummy ethernet header, MPLS label is removed, then resubmit action is processed. This triggers recirculation, where xport_lookup() fails due to former change of packet_type.
The series introduces UUID for xport and stores the UUID of first xport packet was received on in frozen state in case of recirculation. So, when upcall is processed due to recirculation then xport can be found by using the saved UUID and xlate_lookup() should not be invoked. Zoltan Balogh (2): ofproto-dpif-xlate: add uuid to xports xlate: fix xport lookup for recirc ofproto/ofproto-dpif-rid.c | 5 +- ofproto/ofproto-dpif-rid.h | 1 + ofproto/ofproto-dpif-xlate.c | 64 +++++++++++++++++++++++ ofproto/ofproto-dpif-xlate.h | 4 ++ tests/packet-type-aware.at | 122 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 195 insertions(+), 1 deletion(-) -- 2.14.1 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev