When a port with a globally-administered MAC address (e.g., 00:00:00:00:00:04) is added to br-int, OVS may recalculate the bridge datapath ID if no explicit datapath-id is configured. The new DPID causes OVS to tear down all OpenFlow connections to the bridge, since there is no OpenFlow message to notify the controller of a DPID change.
This triggers ovn-controller's ofctrl_seqno_flush(), which resets the internal sequence counter to 0. If a flow update from before the reconnection is still in-flight, ofctrl_put() detects that the new req_cfg is smaller than the pending one and emits "req_cfg regressed from 2 to 1". Fix this by deriving a stable other-config:datapath-id from the bridge name in the ADD_BR macro. This ensures the DPID never changes when ports are added or removed, preventing spurious OpenFlow reconnections during tests. Assisted-by: Claude Opus 4.6, OpenCode Signed-off-by: Ales Musil <[email protected]> --- tests/system-common-macros.at | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/system-common-macros.at b/tests/system-common-macros.at index b32fc0b68..b8237b483 100644 --- a/tests/system-common-macros.at +++ b/tests/system-common-macros.at @@ -42,7 +42,10 @@ m4_define([NS_CHECK_EXEC], # # Expands into the proper ovs-vsctl commands to create a bridge with the # appropriate type, and allows additional arguments to be passed. -m4_define([ADD_BR], [ovs-vsctl _ADD_BR([$1]) -- $2]) +# A stable datapath-id derived from the bridge name is set. +m4_define([ADD_BR], + [dpid=$(printf '%016x' $(echo '$1' | cksum | cut -d ' ' -f1)) + ovs-vsctl _ADD_BR([$1]) -- set Bridge $1 other-config:datapath-id="$dpid" -- $2]) # ADD_VETH([port], [namespace], [ovs-br], [ip_addr] [mac_addr], [gateway], # [ip_addr_flags] [ip6_addr] [gateway6]) -- 2.54.0 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
