On 31.10.2019 15:01, William Tu wrote:
The root cause: Every change in the state of the network interface
of a linux kernel device generates if-notifier event and if-notifier
event triggers the OVS code to re-apply the configuration of ports,
i.e. add broken ports back. The most obvious part is that dpif-netdev
changes the device flags before trying to configure it:



    1. add_port()
    2. set_flags() --> if-notifier event
    3. reconfigure() --> port removal from the datapath due to
                         misconfiguration or any other issue in
                         the underlying device.
    4. setting flags back --> another if-notifier event.
    5. There was new if-notifier event?
       yes --> re-apply all settings. --> goto step 1.


Hi Eelco and Ilya,

Is it better to save the current flags before step2, and
after setting flags back, at step 5, we know it's the same
as before, so we can skip re-applying all settings.

It already works like this, i.e. flags are saved and restored,
but each netlink notification increments sequence number in
bridge.c and bridge.c decides to re-apply configs because sequence
number changed. Datapath doesn't have control over that.

The best we can do is to postpone flags update until we know that
reconfguration passed.

Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to