On Sat, Dec 07, 2019 at 03:46:16PM +0100, Ilya Maximets wrote: > Infinite re-addition of failed ports happens if the device in userspace > datapath has a linux network interface and it's not able to be > configured. For example, if the first reconfiguration fails because of > misconfiguration or bad initial device state. > In current code victims are afxdp ports and the Mellanox NIC ports > opened by the DPDK due to their bifurcated drivers (It's unlikely for > usual netdev-linux ports to fail). > > 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. > > Easy way to reproduce is to add afxdp port with n_rxq=N, where N is > bigger than device supports. > > This patch fixes the most obvious case for this issue by moving > enabling of a promisc mode later to the place where we already know > that device could be added to datapath without errors, i.e. after > its first successful reconfiguration. > > Reported-at: > https://mail.openvswitch.org/pipermail/ovs-dev/2019-September/363038.html > Signed-off-by: Ilya Maximets <i.maxim...@ovn.org>
Not sure about the Mellanox's bifurcated driver use case, but I tested the afxdp port config fails cases, and I think the current solution looks pretty ok to me. Acked-by: William Tu <u9012...@gmail.com> _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev